﻿/**************************************************************
 *
 * 唯一标识：b9cdff8a-3a3c-44dd-8f86-a1fb0b7be32b
 * 命名空间：Sgr.Middlewares
 * 创建时间：2023/8/8 17:45:53
 * 机器名称：DESKTOP-S0D075D
 * 创建者：antho
 * 电子邮箱：fengqinhua2016@163.com
 * 描述：
 *
 **************************************************************/

namespace Sgr.AuditLogs.Contributor
{
    /// <summary>
    /// 审计日志信息构建者接口
    /// </summary>
    public interface IAuditLogContributor
    {
        /// <summary>
        /// 是否进行完整审计（如记录所有请求参数、详细信息等）
        /// </summary>
        bool IsAuditFull { get; }

        /// <summary>
        /// 审计日志后置处理（如记录请求耗时、结果等）
        /// </summary>
        /// <param name="context">当前HTTP请求上下文</param>
        /// <param name="auditInfo">用户请求审计信息对象</param>
        /// <returns>异步任务</returns>
        Task PostContribute(HttpContext context, UserHttpRequestAuditInfo auditInfo);

        /// <summary>
        /// 审计日志前置处理（如记录请求参数、用户信息等）
        /// </summary>
        /// <param name="context">当前HTTP请求上下文</param>
        /// <param name="auditInfo">用户请求审计信息对象</param>
        /// <param name="functionDescriptor">功能描述（可选）</param>
        /// <param name="withReqestParam">是否包含请求参数（默认true）</param>
        /// <returns>异步任务</returns>
        Task PreContribute(HttpContext context, UserHttpRequestAuditInfo auditInfo, string functionDescriptor = "", bool withReqestParam = true);
    }
}